home *** CD-ROM | disk | FTP | other *** search
/ Erotic Games: Memory / Erotic Games: Memory.iso / mac / air_installers / AdobeAIR.exe / setup.swf / scripts / mx / managers / LayoutManager.as < prev    next >
Text File  |  2009-02-12  |  15KB  |  423 lines

  1. package mx.managers
  2. {
  3.    import flash.display.Stage;
  4.    import flash.events.Event;
  5.    import flash.events.EventDispatcher;
  6.    import mx.core.ApplicationGlobals;
  7.    import mx.core.UIComponent;
  8.    import mx.core.mx_internal;
  9.    import mx.events.FlexEvent;
  10.    import mx.managers.layoutClasses.PriorityQueue;
  11.    
  12.    use namespace mx_internal;
  13.    
  14.    public class LayoutManager extends EventDispatcher implements ILayoutManager
  15.    {
  16.       
  17.       mx_internal static const VERSION:String = "3.0.0.0";
  18.       
  19.       private static var instance:LayoutManager;
  20.        
  21.       
  22.       private var invalidateClientPropertiesFlag:Boolean = false;
  23.       
  24.       private var invalidateDisplayListQueue:PriorityQueue;
  25.       
  26.       private var updateCompleteQueue:PriorityQueue;
  27.       
  28.       private var invalidateDisplayListFlag:Boolean = false;
  29.       
  30.       private var invalidateClientSizeFlag:Boolean = false;
  31.       
  32.       private var invalidateSizeQueue:PriorityQueue;
  33.       
  34.       private var originalFrameRate:Number;
  35.       
  36.       private var invalidatePropertiesFlag:Boolean = false;
  37.       
  38.       private var invalidatePropertiesQueue:PriorityQueue;
  39.       
  40.       private var invalidateSizeFlag:Boolean = false;
  41.       
  42.       private var callLaterPending:Boolean = false;
  43.       
  44.       private var _usePhasedInstantiation:Boolean = false;
  45.       
  46.       private var callLaterObject:UIComponent;
  47.       
  48.       private var targetLevel:int = 2.147483647E9;
  49.       
  50.       public function LayoutManager()
  51.       {
  52.          updateCompleteQueue = new PriorityQueue();
  53.          invalidatePropertiesQueue = new PriorityQueue();
  54.          invalidateSizeQueue = new PriorityQueue();
  55.          invalidateDisplayListQueue = new PriorityQueue();
  56.          super();
  57.       }
  58.       
  59.       public static function getInstance() : LayoutManager
  60.       {
  61.          if(!instance)
  62.          {
  63.             instance = new LayoutManager();
  64.          }
  65.          return instance;
  66.       }
  67.       
  68.       public function set usePhasedInstantiation(param1:Boolean) : void
  69.       {
  70.          var _loc2_:Stage = null;
  71.          if(_usePhasedInstantiation != param1)
  72.          {
  73.             _usePhasedInstantiation = param1;
  74.             _loc2_ = SystemManagerGlobals.topLevelSystemManagers[0].stage;
  75.             if(param1)
  76.             {
  77.                originalFrameRate = _loc2_.frameRate;
  78.                _loc2_.frameRate = 1000;
  79.             }
  80.             else
  81.             {
  82.                _loc2_.frameRate = originalFrameRate;
  83.             }
  84.          }
  85.       }
  86.       
  87.       private function waitAFrame() : void
  88.       {
  89.          callLaterObject.callLater(doPhasedInstantiation);
  90.       }
  91.       
  92.       public function validateClient(param1:ILayoutManagerClient, param2:Boolean = false) : void
  93.       {
  94.          var _loc3_:ILayoutManagerClient = null;
  95.          var _loc4_:int = 0;
  96.          var _loc5_:Boolean = false;
  97.          var _loc6_:int = targetLevel;
  98.          if(targetLevel == int.MAX_VALUE)
  99.          {
  100.             targetLevel = param1.nestLevel;
  101.          }
  102.          while(!_loc5_)
  103.          {
  104.             _loc5_ = true;
  105.             _loc3_ = ILayoutManagerClient(invalidatePropertiesQueue.removeSmallestChild(param1));
  106.             while(_loc3_)
  107.             {
  108.                _loc3_.validateProperties();
  109.                if(!_loc3_.updateCompletePendingFlag)
  110.                {
  111.                   updateCompleteQueue.addObject(_loc3_,_loc3_.nestLevel);
  112.                   _loc3_.updateCompletePendingFlag = true;
  113.                }
  114.                _loc3_ = ILayoutManagerClient(invalidatePropertiesQueue.removeSmallestChild(param1));
  115.             }
  116.             if(invalidatePropertiesQueue.isEmpty())
  117.             {
  118.                invalidatePropertiesFlag = false;
  119.                invalidateClientPropertiesFlag = false;
  120.             }
  121.             _loc3_ = ILayoutManagerClient(invalidateSizeQueue.removeLargestChild(param1));
  122.             while(_loc3_)
  123.             {
  124.                _loc3_.validateSize();
  125.                if(!_loc3_.updateCompletePendingFlag)
  126.                {
  127.                   updateCompleteQueue.addObject(_loc3_,_loc3_.nestLevel);
  128.                   _loc3_.updateCompletePendingFlag = true;
  129.                }
  130.                if(invalidateClientPropertiesFlag)
  131.                {
  132.                   _loc3_ = ILayoutManagerClient(invalidatePropertiesQueue.removeSmallestChild(param1));
  133.                   if(_loc3_)
  134.                   {
  135.                      invalidatePropertiesQueue.addObject(_loc3_,_loc3_.nestLevel);
  136.                      _loc5_ = false;
  137.                      break;
  138.                   }
  139.                }
  140.                _loc3_ = ILayoutManagerClient(invalidateSizeQueue.removeLargestChild(param1));
  141.             }
  142.             if(invalidateSizeQueue.isEmpty())
  143.             {
  144.                invalidateSizeFlag = false;
  145.                invalidateClientSizeFlag = false;
  146.             }
  147.             if(!param2)
  148.             {
  149.                _loc3_ = ILayoutManagerClient(invalidateDisplayListQueue.removeSmallestChild(param1));
  150.                while(_loc3_)
  151.                {
  152.                   _loc3_.validateDisplayList();
  153.                   if(!_loc3_.updateCompletePendingFlag)
  154.                   {
  155.                      updateCompleteQueue.addObject(_loc3_,_loc3_.nestLevel);
  156.                      _loc3_.updateCompletePendingFlag = true;
  157.                   }
  158.                   if(invalidateClientPropertiesFlag)
  159.                   {
  160.                      _loc3_ = ILayoutManagerClient(invalidatePropertiesQueue.removeSmallestChild(param1));
  161.                      if(_loc3_)
  162.                      {
  163.                         invalidatePropertiesQueue.addObject(_loc3_,_loc3_.nestLevel);
  164.                         _loc5_ = false;
  165.                         break;
  166.                      }
  167.                   }
  168.                   if(invalidateClientSizeFlag)
  169.                   {
  170.                      _loc3_ = ILayoutManagerClient(invalidateSizeQueue.removeLargestChild(param1));
  171.                      if(_loc3_)
  172.                      {
  173.                         invalidateSizeQueue.addObject(_loc3_,_loc3_.nestLevel);
  174.                         _loc5_ = false;
  175.                         break;
  176.                      }
  177.                   }
  178.                   _loc3_ = ILayoutManagerClient(invalidateDisplayListQueue.removeSmallestChild(param1));
  179.                }
  180.                if(invalidateDisplayListQueue.isEmpty())
  181.                {
  182.                   invalidateDisplayListFlag = false;
  183.                }
  184.             }
  185.          }
  186.          if(_loc6_ == int.MAX_VALUE)
  187.          {
  188.             targetLevel = int.MAX_VALUE;
  189.             if(!param2)
  190.             {
  191.                _loc3_ = ILayoutManagerClient(updateCompleteQueue.removeLargestChild(param1));
  192.                while(_loc3_)
  193.                {
  194.                   if(!_loc3_.initialized)
  195.                   {
  196.                      _loc3_.initialized = true;
  197.                   }
  198.                   _loc3_.dispatchEvent(new FlexEvent(FlexEvent.UPDATE_COMPLETE));
  199.                   _loc3_.updateCompletePendingFlag = false;
  200.                   _loc3_ = ILayoutManagerClient(updateCompleteQueue.removeLargestChild(param1));
  201.                }
  202.             }
  203.          }
  204.       }
  205.       
  206.       private function validateProperties() : void
  207.       {
  208.          var _loc1_:ILayoutManagerClient = ILayoutManagerClient(invalidatePropertiesQueue.removeSmallest());
  209.          while(_loc1_)
  210.          {
  211.             _loc1_.validateProperties();
  212.             if(!_loc1_.updateCompletePendingFlag)
  213.             {
  214.                updateCompleteQueue.addObject(_loc1_,_loc1_.nestLevel);
  215.                _loc1_.updateCompletePendingFlag = true;
  216.             }
  217.             _loc1_ = ILayoutManagerClient(invalidatePropertiesQueue.removeSmallest());
  218.          }
  219.          if(invalidatePropertiesQueue.isEmpty())
  220.          {
  221.             invalidatePropertiesFlag = false;
  222.          }
  223.       }
  224.       
  225.       public function invalidateProperties(param1:ILayoutManagerClient) : void
  226.       {
  227.          if(!invalidatePropertiesFlag && ApplicationGlobals.application.systemManager)
  228.          {
  229.             invalidatePropertiesFlag = true;
  230.             if(!callLaterPending)
  231.             {
  232.                if(!callLaterObject)
  233.                {
  234.                   callLaterObject = new UIComponent();
  235.                   callLaterObject.systemManager = ApplicationGlobals.application.systemManager;
  236.                   callLaterObject.callLater(waitAFrame);
  237.                }
  238.                else
  239.                {
  240.                   callLaterObject.callLater(doPhasedInstantiation);
  241.                }
  242.                callLaterPending = true;
  243.             }
  244.          }
  245.          if(targetLevel <= param1.nestLevel)
  246.          {
  247.             invalidateClientPropertiesFlag = true;
  248.          }
  249.          invalidatePropertiesQueue.addObject(param1,param1.nestLevel);
  250.       }
  251.       
  252.       public function invalidateDisplayList(param1:ILayoutManagerClient) : void
  253.       {
  254.          if(!invalidateDisplayListFlag && ApplicationGlobals.application.systemManager)
  255.          {
  256.             invalidateDisplayListFlag = true;
  257.             if(!callLaterPending)
  258.             {
  259.                if(!callLaterObject)
  260.                {
  261.                   callLaterObject = new UIComponent();
  262.                   callLaterObject.systemManager = ApplicationGlobals.application.systemManager;
  263.                   callLaterObject.callLater(waitAFrame);
  264.                }
  265.                else
  266.                {
  267.                   callLaterObject.callLater(doPhasedInstantiation);
  268.                }
  269.                callLaterPending = true;
  270.             }
  271.          }
  272.          invalidateDisplayListQueue.addObject(param1,param1.nestLevel);
  273.       }
  274.       
  275.       private function validateDisplayList() : void
  276.       {
  277.          var _loc1_:ILayoutManagerClient = ILayoutManagerClient(invalidateDisplayListQueue.removeSmallest());
  278.          while(_loc1_)
  279.          {
  280.             _loc1_.validateDisplayList();
  281.             if(!_loc1_.updateCompletePendingFlag)
  282.             {
  283.                updateCompleteQueue.addObject(_loc1_,_loc1_.nestLevel);
  284.                _loc1_.updateCompletePendingFlag = true;
  285.             }
  286.             _loc1_ = ILayoutManagerClient(invalidateDisplayListQueue.removeSmallest());
  287.          }
  288.          if(invalidateDisplayListQueue.isEmpty())
  289.          {
  290.             invalidateDisplayListFlag = false;
  291.          }
  292.       }
  293.       
  294.       public function validateNow() : void
  295.       {
  296.          var _loc1_:int = 0;
  297.          if(!usePhasedInstantiation)
  298.          {
  299.             _loc1_ = 0;
  300.             while(callLaterPending && _loc1_++ < 100)
  301.             {
  302.                doPhasedInstantiation();
  303.             }
  304.          }
  305.       }
  306.       
  307.       private function validateSize() : void
  308.       {
  309.          var _loc1_:ILayoutManagerClient = ILayoutManagerClient(invalidateSizeQueue.removeLargest());
  310.          while(_loc1_)
  311.          {
  312.             _loc1_.validateSize();
  313.             if(!_loc1_.updateCompletePendingFlag)
  314.             {
  315.                updateCompleteQueue.addObject(_loc1_,_loc1_.nestLevel);
  316.                _loc1_.updateCompletePendingFlag = true;
  317.             }
  318.             _loc1_ = ILayoutManagerClient(invalidateSizeQueue.removeLargest());
  319.          }
  320.          if(invalidateSizeQueue.isEmpty())
  321.          {
  322.             invalidateSizeFlag = false;
  323.          }
  324.       }
  325.       
  326.       private function doPhasedInstantiation() : void
  327.       {
  328.          var _loc1_:ILayoutManagerClient = null;
  329.          if(usePhasedInstantiation)
  330.          {
  331.             if(invalidatePropertiesFlag)
  332.             {
  333.                validateProperties();
  334.                ApplicationGlobals.application.dispatchEvent(new Event("validatePropertiesComplete"));
  335.             }
  336.             else if(invalidateSizeFlag)
  337.             {
  338.                validateSize();
  339.                ApplicationGlobals.application.dispatchEvent(new Event("validateSizeComplete"));
  340.             }
  341.             else if(invalidateDisplayListFlag)
  342.             {
  343.                validateDisplayList();
  344.                ApplicationGlobals.application.dispatchEvent(new Event("validateDisplayListComplete"));
  345.             }
  346.          }
  347.          else
  348.          {
  349.             if(invalidatePropertiesFlag)
  350.             {
  351.                validateProperties();
  352.             }
  353.             if(invalidateSizeFlag)
  354.             {
  355.                validateSize();
  356.             }
  357.             if(invalidateDisplayListFlag)
  358.             {
  359.                validateDisplayList();
  360.             }
  361.          }
  362.          if(invalidatePropertiesFlag || invalidateSizeFlag || invalidateDisplayListFlag)
  363.          {
  364.             callLaterObject.callLater(doPhasedInstantiation);
  365.          }
  366.          else
  367.          {
  368.             usePhasedInstantiation = false;
  369.             callLaterPending = false;
  370.             _loc1_ = ILayoutManagerClient(updateCompleteQueue.removeLargest());
  371.             while(_loc1_)
  372.             {
  373.                if(!_loc1_.initialized && _loc1_.processedDescriptors)
  374.                {
  375.                   _loc1_.initialized = true;
  376.                }
  377.                _loc1_.dispatchEvent(new FlexEvent(FlexEvent.UPDATE_COMPLETE));
  378.                _loc1_.updateCompletePendingFlag = false;
  379.                _loc1_ = ILayoutManagerClient(updateCompleteQueue.removeLargest());
  380.             }
  381.             dispatchEvent(new FlexEvent(FlexEvent.UPDATE_COMPLETE));
  382.          }
  383.       }
  384.       
  385.       public function isInvalid() : Boolean
  386.       {
  387.          return invalidatePropertiesFlag || invalidateSizeFlag || invalidateDisplayListFlag;
  388.       }
  389.       
  390.       public function get usePhasedInstantiation() : Boolean
  391.       {
  392.          return _usePhasedInstantiation;
  393.       }
  394.       
  395.       public function invalidateSize(param1:ILayoutManagerClient) : void
  396.       {
  397.          if(!invalidateSizeFlag && ApplicationGlobals.application.systemManager)
  398.          {
  399.             invalidateSizeFlag = true;
  400.             if(!callLaterPending)
  401.             {
  402.                if(!callLaterObject)
  403.                {
  404.                   callLaterObject = new UIComponent();
  405.                   callLaterObject.systemManager = ApplicationGlobals.application.systemManager;
  406.                   callLaterObject.callLater(waitAFrame);
  407.                }
  408.                else
  409.                {
  410.                   callLaterObject.callLater(doPhasedInstantiation);
  411.                }
  412.                callLaterPending = true;
  413.             }
  414.          }
  415.          if(targetLevel <= param1.nestLevel)
  416.          {
  417.             invalidateClientSizeFlag = true;
  418.          }
  419.          invalidateSizeQueue.addObject(param1,param1.nestLevel);
  420.       }
  421.    }
  422. }
  423.